<?php
/**
 * Desc:
 * User: yangming
 * Date: 2024/4/12 11:32
 * Ver: 1.0
 */

use App\Models\Category;

/*
 * 所有分类原始数据
 */
if (!function_exists('categoryTree')) {
    function categoryTree($group = 'goods', $status = false)
    {
        $categories = Category::select('id', 'name', 'pid', 'level', 'status')
                              ->when($status !== false, function($query) use ($status) {
                                  $query->where('status', $status);
                              })
                              ->where('group', $group)
                              ->where('pid', 0)
                              ->with(
                                  [
                                      'children'          => function($query) use ($status) {
                                          $query->select('id', 'name', 'pid', 'level', 'status')
                                                ->when($status !== false, function($query) use ($status) {
                                                    $query->where('status', $status);
                                                });
                                      },
                                      'children.children' => function($query) use ($status) {
                                          $query->select('id', 'name', 'pid', 'level', 'status')
                                                ->when($status !== false, function($query) use ($status) {
                                                    $query->where('status', $status);
                                                });
                                      },
                                  ]
                              )
                              ->get();
        return $categories;
    }
}


/*
 * 缓存没有被禁用的分类
 */
if (!function_exists('cache_category')) {
    function cache_category()
    {
        return cache()->rememberForever('cache_category', function() {
            return categoryTree('goods', 1);
        });
    }
}

/*
 * 缓存所有的分类
 */
if (!function_exists('cache_category_all')) {
    function cache_category_all()
    {
        return cache()->rememberForever('cache_category_all', function() {
            return categoryTree('goods');
        });
    }
}

/*
 * 缓存没有被禁用的分类
 */
if (!function_exists('cache_category_menu')) {
    function cache_category_menu()
    {
        return cache()->rememberForever('cache_category_menu', function() {
            return categoryTree('menu', 1);
        });
    }
}

/*
 * 缓存所有的分类
 */
if (!function_exists('cache_category_menu_all')) {
    function cache_category_menu_all()
    {
        return cache()->rememberForever('cache_category_menu_all', function() {
            return categoryTree('menu');
        });
    }
}

/*
 * 删除所有分类缓存
 */
if (!function_exists('forget_cache_category')) {
    function forget_cache_category()
    {
        cache()->forget('cache_category');
        cache()->forget('cache_category_all');
        cache()->forget('cache_category_menu');
        cache()->forget('cache_category_menu_all');
    }
}

if (!function_exists('qiniu_url')) {
    function qiniu_url($key)
    {
        // 如果没有$key
        if (empty($key))
            return '';
        //如果$key包含了http等，是一个完整的地址，则直接返回
        // 如果$key包含了http等, 是一个完整的地址, 直接返回
        if (strpos($key, 'http://') !== false
            || strpos($key, 'https://')  !== false
            || strpos($key, 'data:image')  !== false) {
            return $key;
        }
        return 'https://' . config('filesystems.disks.qiniu.url') . '/shopApi/' . $key;
    }
}
